package baiqitun.stupro.project.service;


import baiqitun.stupro.common.service.MyService;
import baiqitun.stupro.project.core.document.entity.SysProjectDocument;
import baiqitun.stupro.project.entity.SysProject;
import baiqitun.stupro.project.entity.SysProjectUserRole;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * <p>
 * 项目成员角色表 服务类
 * </p>
 *
 * @author kedaji
 * @since 2020-04-18
 */
public interface SysProjectUserRoleService extends MyService<SysProjectUserRole> {
    /**
     * 创建普通项目
     * @param project 项目信息
     * @param document 项目说明文档
     */
    void saveFreeProject(SysProject project, SysProjectDocument document);

    /**
     * 创建一生一品项目
     * @param project 项目信息
     * @param document 项目说明文档
     */
    void saveSubjectProject(SysProject project, SysProjectDocument document);

    /**
     * 向项目添加用户
     * @param projectId 项目id
     * @param userId 用户id
     * @param createBy 创建者用户名
     */
    void saveUserToProject(String projectId, String userId, String createBy);

    /**
     * 向项目成员授予角色权限
     * @param projectId 项目id
     * @param userId 角色id
     * @param projectRoleCode 项目角色代码
     * @param createBy 创建人用户名
     */
    public void grantRoleToUser(String projectId, String userId, String projectRoleCode, String createBy);

    /**
     * 邀请导师加入项目
     * @param projectId 项目id
     * @param ownerUserId 创建人用户id
     * @param tutorUserIds 导师用户id列表
     * @param description 备注
     */
    void inviteTutors(String projectId, String ownerUserId, List<String> tutorUserIds, String description);



    /**
     * 邀请学生加入项目
     * @param projectId  项目id
     * @param studentUserId 学生用户id
     * @param ownerUserId 创建人用户id
     * @param description 备注
     */
    void inviteStudents(String projectId, String ownerUserId, List<String> studentUserId, String description);

    /**
     * 将项目转让给其他人
     * @param projectId 项目id
     * @param ownerUserId 项目拥有者用户id
     * @param targetUserId 被转让人用户id
     */
    void transfer(String projectId, String ownerUserId, String targetUserId);
}
